﻿using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 工业设备监控系统.Models;

namespace 工业设备监控系统.DAL
{
    public class TestData
    {
        //public List<Device> devices = new List<Device>{
        //    new Device
        //    {
        //        Id = 1,
        //        Name = "PLC-主控柜",
        //        Description = "西门子 S7-1200 模拟设备",
        //        CommunicationType = "Simulation",
        //        IpAddress = "192.168.1.100",
        //        Port = 502,
        //        Status = "运行",
        //        IsEnabled = true,
        //        LastHeartbeat = DateTime.Now
        //    },
        //    new Device
        //    {
        //        Id = 2,
        //        Name = "温度传感器-1号炉",
        //        Description = "PT100 温度采集",
        //        CommunicationType = "Simulation",
        //        IpAddress = "192.168.1.101",
        //        Port = 502,
        //        Status = "运行",
        //        IsEnabled = true,
        //        LastHeartbeat = DateTime.Now
        //    },
        //    new Device
        //    {
        //        Id = 3,
        //        Name = "电机-冷却泵",
        //        Description = "三相异步电机状态监控",
        //        CommunicationType = "Simulation",
        //        IpAddress = "192.168.1.102",
        //        Port = 502,
        //        Status = "停止",
        //        IsEnabled = true,
        //        LastHeartbeat = DateTime.Now.AddMinutes(-5) // 模拟离线
        //    }
        //};

        //public List<Register> registers = new List<Register>
        //{
        //    // PLC-主控柜
        //    new Register
        //    {
        //        Id = 1,
        //        Name = "CPU占用率",
        //        Unit = "%",
        //        Address = 40001,
        //        DataType = "Int16",
        //        Value = 75,
        //        MinValue = 0,
        //        MaxValue = 90, // 超过报警
        //        IsAlarmEnabled = true,
        //        DeviceId = 1,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 2,
        //        Name = "内存使用",
        //        Unit = "MB",
        //        Address = 40002,
        //        DataType = "Int16",
        //        Value = 850,
        //        MinValue = 0,
        //        MaxValue = 1000,
        //        IsAlarmEnabled = true,
        //        DeviceId = 1,
        //        LastUpdated = DateTime.Now
        //    },

        //    // 温度传感器-1号炉
        //    new Register
        //    {
        //        Id = 3,
        //        Name = "炉膛温度",
        //        Unit = "°C",
        //        Address = 40003,
        //        DataType = "Float",
        //        Value = 85.5,
        //        MinValue = 20,
        //        MaxValue = 80, // 超过报警
        //        IsAlarmEnabled = true,
        //        DeviceId = 2,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 4,
        //        Name = "设定温度",
        //        Unit = "°C",
        //        Address = 40004,
        //        DataType = "Float",
        //        Value = 75,
        //        MinValue = 0,
        //        MaxValue = 200,
        //        IsAlarmEnabled = false,
        //        DeviceId = 2,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 5,
        //        Name = "加热状态",
        //        Unit = "",
        //        Address = 40005,
        //        DataType = "Bool",
        //        Value = 1, // 1=开启
        //        MinValue = 0,
        //        MaxValue = 1,
        //        IsAlarmEnabled = false,
        //        DeviceId = 2,
        //        LastUpdated = DateTime.Now
        //    },

        //    // 电机-冷却泵
        //    new Register
        //    {
        //        Id = 6,
        //        Name = "电机转速",
        //        Unit = "RPM",
        //        Address = 40006,
        //        DataType = "Int16",
        //        Value = 0, // 停止
        //        MinValue = 0,
        //        MaxValue = 3000,
        //        IsAlarmEnabled = false,
        //        DeviceId = 3,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 7,
        //        Name = "电机温度",
        //        Unit = "°C",
        //        Address = 40007,
        //        DataType = "Float",
        //        Value = 68.2,
        //        MinValue = 0,
        //        MaxValue = 70,
        //        IsAlarmEnabled = true,
        //        DeviceId = 3,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 8,
        //        Name = "振动强度",
        //        Unit = "mm/s",
        //        Address = 40008,
        //        DataType = "Float",
        //        Value = 4.3,
        //        MinValue = 0,
        //        MaxValue = 4.0, // 超过报警
        //        IsAlarmEnabled = true,
        //        DeviceId = 3,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 9,
        //        Name = "电源电压",
        //        Unit = "V",
        //        Address = 40009,
        //        DataType = "Float",
        //        Value = 390.5,
        //        MinValue = 360,
        //        MaxValue = 400,
        //        IsAlarmEnabled = false,
        //        DeviceId = 3,
        //        LastUpdated = DateTime.Now
        //    },
        //    new Register
        //    {
        //        Id = 10,
        //        Name = "运行时间",
        //        Unit = "小时",
        //        Address = 40010,
        //        DataType = "Int32",
        //        Value = 1250,
        //        MinValue = 0,
        //        MaxValue = 10000,
        //        IsAlarmEnabled = false,
        //        DeviceId = 3,
        //        LastUpdated = DateTime.Now
        //    }
        //};

        // 模拟设备和寄存器数据
        public List<Device> devices = new List<Device>
            {
                new Device { Id = 1, Name = "PLC-主控柜" },
                new Device { Id = 2, Name = "温度传感器-1号炉" },
                new Device { Id = 3, Name = "电机-冷却泵" }
            };

        private List<Register> registers = new List<Register>
            {
                new Register { Id = 1, DeviceId = 1, Name = "CPU占用率", Value = 70, MinValue = 0, MaxValue = 90, Address = 4001,Unit = "%"  },
                new Register { Id = 1, DeviceId = 1, Name = "温度", Value =91, MinValue = 0, MaxValue = 100, Address = 4002, Unit = "°C" },
                new Register { Id = 1, DeviceId = 2, Name = "显卡型号", Value = 5060, MinValue = 1650, MaxValue = 6090, Address = 4003,Unit = "ti" },
                new Register { Id = 2, DeviceId = 1, Name = "内存使用", Value = 800, MinValue = 0, MaxValue = 1000, Address = 4004, Unit = "MB" },
                new Register { Id = 3, DeviceId = 2, Name = "炉膛温度", Value = 200, MinValue = 100, MaxValue = 220, Address = 4005, Unit = "°C" },
                new Register { Id = 4, DeviceId = 2, Name = "设定温度", Value = 210, MinValue = 100, MaxValue = 300, Address = 4006, Unit = "°C" },
                new Register { Id = 5, DeviceId = 3, Name = "电机转速", Value = 0, MinValue = 0, MaxValue = 3000, Address = 4007, Unit = "RPM" },
                new Register { Id = 6, DeviceId = 3, Name = "振动强度", Value = 3.5, MinValue = 0, MaxValue = 5.0, Address = 4008, Unit = "mm/s" },
                new Register { Id = 7, DeviceId = 3, Name = "电机温度", Value = 45, MinValue = 0, MaxValue = 80, Address = 4009, Unit = "°C" }
            };

        public List<Alarm> alarms = new List<Alarm>
        {
            new Alarm
            {
                Id = 1,
                DeviceName = "PLC-主控柜",
                RegisterName = "CPU占用率",
                Message = "CPU占用过高",
                Level = "Warning",
                Value = 75,
                Threshold = 70,
                TriggerTime = DateTime.Now.AddMinutes(-2),
                IsCleared = false
            },
            new Alarm
            {
                Id = 2,
                DeviceName = "温度传感器-1号炉",
                RegisterName = "炉膛温度",
                Message = "温度超限",
                Level = "Error",
                Value = 85.5,
                Threshold = 80,
                TriggerTime = DateTime.Now.AddMinutes(-1),
                IsCleared = false
            },
            new Alarm
            {
                Id = 3,
                DeviceName = "电机-冷却泵",
                RegisterName = "振动强度",
                Message = "振动异常",
                Level = "Critical",
                Value = 4.3,
                Threshold = 4.0,
                TriggerTime = DateTime.Now.AddMinutes(-3),
                IsCleared = false
            }
            };

        public Tuple<List<Device>, List<Register>, List<Alarm>> GetAllData()
        {
            return Tuple.Create(devices, registers, alarms);
        }
    }
}